package com.bicon.botu.mall.coupon.service;


import com.baomidou.mybatisplus.service.IService;
import com.bicon.botu.core.base.common.entity.BaseResult;
import com.bicon.botu.mall.coupon.dto.CouponsDto;
import com.bicon.botu.mall.coupon.dto.MyCouponsDto;
import com.bicon.botu.mall.coupon.dto.OrderMyCouponsDto;
import com.bicon.botu.mall.coupon.entity.Coupons;
import com.bicon.botu.mall.coupon.entity.MyCoupons;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 用户领取的优惠券 服务类
 * </p>
 *
 * @author 吕祥
 * @since 2017-07-22
 */
public interface IMyCouponsService extends IService<MyCoupons> {

    /**
     * 新增我的优惠卷
     *
     * @param userId    用户id
     * @param couponsId 优惠券id
     * @return
     */
    BaseResult add(String userId, String couponsId);

    /**
     * 删除我的优惠券
     *
     * @param userId     用户id
     * @param couponsIds 优惠券 id Json格式
     * @return
     */
    BaseResult deleteById(String userId, String couponsIds);

    /**
     * 修改我的优惠券
     *
     * @param id        我的优惠券id
     * @param userId    用户id
     * @param couponsId 优惠券id
     * @return
     */
    BaseResult updateById(String id, String userId, String couponsId);

    /**
     * 查询用户的优惠券(未使用， 已使用， 已过期三种优惠券信息)
     *
     * @param userId 用户id
     * @return
     */
    Map<String, List<Coupons>> findAllMyCoupons(String userId);

    /**
     * .根据商品查询该商品可用优惠券
     *
     * @param userId       用户id
     * @param classifyPath 分类path
     * @param brandId      品牌id
     * @param productId    商品id
     * @return
     */
    Map<String, List<Coupons>> findCoupon(String userId, String classifyPath, String brandId, String productId);

    /**
     * 根据多个商品查询这些商品可用的用户已领取的优惠券
     *
     * @param userId 用户id
     * @param paths  Json格式的path集合
     * @return
     */
    Map<String, List<Coupons>> multiFindCoupons(String userId, String paths);

    /**
     * 根据多个商品查询这些商品可用的用户已领取的优惠券 (安卓)
     *
     * @param userId 用户id
     * @param paths  Json格式的path集合
     * @return
     */
    List<CouponsDto> findMyCouponsByMultiProduct(String userId, String paths);

    /**
     * 根据优惠券状态 查询我的优惠券列表
     * @param status 优惠券状态
     * @param userId 用户ID
     * @return
     */
    List<MyCouponsDto> getMyCouponsListByStatus(String status,String userId);

    /**
     * 查询我的优惠券
     *
     * @param myCoupons 多个优惠券id
     * @return
     */
    List<String> selectMyCoupons(List<String> myCoupons);
}
